/*
 * 文件名：FeedBackResultHandler.java
 * 版权：Copyright 2012-2016 广州宝锶信息技术有限公司
 * 创建人：曾毅
 * 创建时间：2017年8月25日 下午5:00:38
 * 修改人：
 * 修改时间：
 * 修改内容：
 */
package com.baothink.weichat.handler;

import java.util.HashMap;
import java.util.Map;

import javax.media.rtp.rtcp.Feedback;

import org.dom4j.Document;
import org.dom4j.Element;

import com.baothink.weichat.dto.base.FeedBackEventBaseDto;
import com.baothink.weichat.dto.event.EnterAgentEventDto;
import com.baothink.weichat.enumer.WechatEvent;
import com.baothink.weichat.utils.StringUtil;
import com.baothink.weichat.utils.XmlUtil;

/**
 * TODO<一句话功能描述><br>
 * TODO<功能详细描述><br>
 * 
 * @author 曾毅
 * @version 1.0,2017年8月25日 下午5:00:38
 * @since weichat 0.0.1
 */
public class FeedBackResultHandler {
	
	private final static String EVENT_NODE_NAME ="Event";
	
	private final static Map<String, Class<? extends FeedBackEventBaseDto>> eventDtoMap = new HashMap<>();
	
	static{
		eventDtoMap.put(WechatEvent.ENTER_AGENT.getCode(), EnterAgentEventDto.class);
	}
	
	public static FeedBackEventBaseDto handlerResult(String result){
		FeedBackEventBaseDto dto = null;
		try {
			WechatEvent eventType = getEventType(XmlUtil.getXMLByString(result));
			Class<? extends FeedBackEventBaseDto> clz = eventDtoMap.get(eventType.getCode());
			dto = XmlUtil.xmlToBean(result, clz);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return dto;
	}
	
	
	private static WechatEvent getEventType(Document doc){
		String event = XmlUtil.getText(doc.getRootElement(), EVENT_NODE_NAME);
		if(!StringUtil.isEmptyOrNull(event)){
			for (WechatEvent wechatEvent : WechatEvent.values()) {
				if(wechatEvent.getCode().equals(event)){
					return wechatEvent;
				}
			}
		}
		return null;
	}
}
